﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace FrbaCommerce.AccessData
{
    class adUsuario
    {

        //actualizar estadoUsuario desde el ABM Cliente
        public static void ActualizarEstadoUsuario(Gets_and_Sets.Cliente_getset Cli, int clienteAModificar)
        {
            int retorno;
            using (SqlConnection conn = Program.obtenerConexion())
            {
                SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.actualizarEstadoUsuario", conn,
                new SqlParameter("@Id", clienteAModificar),
                new SqlParameter("@Estado", Cli.Habilitado));


                retorno = cmd.ExecuteNonQuery();
                conn.Close();
            }
            Codigo_reutilizable.Resultado.validar(retorno, "Estado del Usuario actualizado");

        }

        
        //actualizar estadoUsuario desde el ABM empresa
        public static void ActualizarEstadoUsuario(Gets_and_Sets.Empresa_getset emp, int empresaAModificar)
        {
            int retorno;
            using (SqlConnection conn = Program.obtenerConexion())
            {
                SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.actualizarEstadoUsuario", conn,
                new SqlParameter("@Id", empresaAModificar),
                new SqlParameter("@Estado", emp.Habilitado));


                retorno = cmd.ExecuteNonQuery();
                conn.Close();
            }
            Codigo_reutilizable.Resultado.validar(retorno, "Estado del Usuario actualizado");

        }


        //actualizar contraseña de usuario desde el ABM de Cliente

        public static void ActualizarContraseñaUsuario(Gets_and_Sets.Cliente_getset Cli, int clienteAModificar)
        {
            int retorno;
            using (SqlConnection conn = Program.obtenerConexion())
            {
                SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.actualizarContraseñaUsuario", conn,
                new SqlParameter("@Id", clienteAModificar),
                new SqlParameter("@Contraseña", Cli.Contraseña));


                retorno = cmd.ExecuteNonQuery();
                conn.Close();
            }
            Codigo_reutilizable.Resultado.validar(retorno, "Contraseña del Usuario actualizada");

        }


        //actualizar Contraseña Usuario desde el ABM empresa
        public static void ActualizarContraseñaUsuario(Gets_and_Sets.Empresa_getset emp, int empresaAModificar)
        {
            int retorno;
            using (SqlConnection conn = Program.obtenerConexion())
            {
                SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.actualizarContraseñaUsuario", conn,
                new SqlParameter("@Id", empresaAModificar),
                new SqlParameter("@Contraseña", emp.Contraseña));


                retorno = cmd.ExecuteNonQuery();
                conn.Close();
            }
            Codigo_reutilizable.Resultado.validar(retorno, "Contraseña del Usuario actualizada");

        }


        public static void ActualizarUsuarioEliminado(int usuarioAEliminar)
        {
            int retorno;
            using (SqlConnection conn = Program.obtenerConexion())
            {
                SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.bajaUsuario", conn,
                new SqlParameter("@Id", usuarioAEliminar));


                retorno = cmd.ExecuteNonQuery();
                conn.Close();
            }
            Codigo_reutilizable.Resultado.validar(retorno, "Usuario Eliminado");

        }


        public static Int32 buscarEstadoUsuario(Int32 usuario)
        {
            Int32 estado = -1;

            SqlConnection conn = Program.obtenerConexion();

            SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.buscarEstadoUsuario", conn,
            new SqlParameter("@Id", usuario));
            SqlDataReader lectura = cmd.ExecuteReader();
            while (lectura.Read())
            {
                estado = Convert.ToInt32(lectura.GetValue(0));
            }
            conn.Close();


            if (estado != -1)
            {
                return (estado);
            }
            else
            {
                throw new Excepciones.Excepcion("Error en Query:  << buscarEstadoUsuario >> para obtener estado del Usuario");
            }
        }



        //obtener usuario desde cliente
        public static Int32 obtenerUsuarioId(Decimal dni)
        {
            Int32 user = -1;

            SqlConnection conn = Program.obtenerConexion();

            SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.obtenerUsuarioIdconDNI", conn,
            new SqlParameter("@DNI", dni));
            SqlDataReader lectura = cmd.ExecuteReader();
            while (lectura.Read())
            {
                user = Convert.ToInt32(lectura.GetValue(0));
            }
            conn.Close();


            if (user != -1)
            {
                return (user);
            }
            else
            {
                throw new Excepciones.Excepcion("Error en Query:  << obtenerUsuarioId de Cliente >> para obtener el ID de Usuario");
            }
        }




        //obtener usuario desde empresa
        public static Int32 obtenerUsuarioId(String cuit)
        {
            Int32 user = -1;

            SqlConnection conn = Program.obtenerConexion();

            SqlCommand cmd = Codigo_reutilizable.FuncionesBaseDatos.crearProcedure("GD1C2014.dbo.obtenerUsuarioIdconCUIT", conn,
            new SqlParameter("@CUIT", cuit));
            SqlDataReader lectura = cmd.ExecuteReader();
            while (lectura.Read())
            {
                user = Convert.ToInt32(lectura.GetValue(0));
            }
            conn.Close();


            if (user != -1)
            {
                return (user);
            }
            else
            {
                throw new Excepciones.Excepcion("Error en Query:  << obtenerUsuarioId de Empresa >> para obtener el ID de Usuario");
            }
        }


    }
}